/*
2019.9.9
*/
#include<iostream>
#include<vector>
#include<string>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
string convert(string s, int numRows) ;
int main()
{
	string s="PAYPALISHIRING";
	int numRows=4;
	string str=convert(s,numRows) ;
	cout<<str<<endl;
//	"PINALSIGYAHRPI"
	return 0;
}
string convert(string s, int numRows) 
{
//	cout<<s<<endl;
    vector<char> vec1(numRows),vec2(numRows),vec_result;
    vector<vector<char>> vec;
    int i=0;
    while(i<s.size())
    {
    	for(int j=0;j<numRows;j++)
    	{
    		if(i<s.size())
    		{
    			vec1[j]=s[i];
			}
			else
			{
				vec1[j]='*';
			}
    		i++;
		}
//		for(int i=0;i<vec1.size();i++)
//		{
//			cout<<vec1[i];
//		}
//		cout<<endl;
		vec.push_back(vec1);
		vec2[0]='*';
		vec2[numRows-1]='*';
		for(int j=numRows-2;j>0;j--)
    	{
    		if(i<s.size())
    		{
    			vec2[j]=s[i];
			}
			else
			{
				vec2[j]='*';
			}
    		i++;
		}
		for(int i=0;i<vec2.size();i++)
		{
//			cout<<vec2[i];
		}
//		cout<<endl;
		vec.push_back(vec2);
	}
	for(int i=0;i<numRows;i++)
	{
		for(int j=0;j<vec.size();j++)
		{
			if(vec[j][i]!='*')
			{
				vec_result.push_back(vec[j][i]);
			}
		}
	}
	string str(vec_result.size(),'0');
	for(int i=0;i<vec_result.size();i++)
	{ 
		str[i]=vec_result[i];
	}
	return str;
	
}
